package com.aurora.leetcode.answer;

import java.util.Arrays;

/**
 * @author : Aurora
 * @date : 2024/5/6 14:17
 * @description
 * <p>242.有效的字母异位词</p>
 * <p>给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
 * 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。</p>
 * <p>exp1</p>
 * <p>示例 1:
 * 输入: s = "anagram", t = "nagaram"
 * 输出: true</p>
 * <p>exp2</p>
 * <p>示例 2:
 * 输入: s = "rat", t = "car"
 * 输出: false</p>
 */
public class IsAnagram_242 {
    //原始
    public boolean isAnagram(String s, String t) {
        if(s == null || t == null)return false;
        if(s.length() != t.length()) return false;
        int[] arrs = new int[26];
        int[] arrt = new int[26];
        for(int i=0; i<s.length(); ++i){
            int sNum = s.charAt(i)-95;
            arrs[sNum] += 1;
            int tNum = t.charAt(i)-95;
            arrt[tNum] += 1;
        }
        for(int i=0; i<arrs.length; ++i){
            if(arrs[i] != arrt[i]) return false;
        }
        return true;
    }
    //优化
    public boolean isAnagram2(String s, String t) {
        if(s == null || t == null)return false;
        if(s.length() != t.length()) return false;
        int[] arrs = new int[26];
        for(int i=0; i<s.length(); ++i){
            arrs[s.charAt(i)- 'a'] ++;
            arrs[t.charAt(i)- 'a'] --;
        }
        for(int i=0; i<arrs.length; ++i){
            if(arrs[i] != 0) return false;
        }
        return true;
    }

    public static void main(String[] args) {
        String s1 = "rat";
        String s2 = "tar";
        IsAnagram_242 obj = new IsAnagram_242();
        System.out.println(obj.isAnagram(s1, s2));
    }
}
